博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言编写的PHP框架--yaf入门编程
阅读量:6500 次
发布时间:2019-06-24

本文共 8143 字,大约阅读时间需要 27 分钟。

首先--添加dll,修改php.ini--不同的版本,不同的需求

 

 

 

 

其次,根据教程http://www.laruence.com/manual/tutorial.firstpage.html#tutorial.directory手动搭建好目录结构

 

 

 

 

入口文件index.php位置稍作修改--个人习惯

入口文件内容

run();

配置文件

配置文件内容

[product];支持直接写PHP中的已定义常量application.directory=APP_PATH "/yaf/application"

集成了一个数据库操作类

 

控制器写法

 

new DBModel();的意思是去models文件夹下找DB.php里的DBModel类

 

DB.php

 

D:\WWW\yaf\application\models\Mysqli.php

* +---------------------------------------------------------------------- * | 文件功能:mysqli 数据库操作、分页类 * +---------------------------------------------------------------------- *//*// 使用方法// define('ROOT_PATH', '..'); // 单独提取本站的 db_mysqli 类在其他地方使用时,请注意错误日志 ROOT_PATH 路径是否正确$host = 'localhost';$username = 'root';$passwd = '';$dbname = 'weizephp';$port = 3306;$socket = NULL;$dbcharset = 'utf8';$error_reporting = TRUE; // $error_reporting 为 FALSE 时,显示错误,适用于开发的时候调试$DB = new db_mysqli($host, $username, $passwd, $dbname, $port, $socket, $dbcharset, $error_reporting); // 连接数据库echo '
---------------------------- 获取单条结果 ----------------------------
';$sql = "SELECT * FROM `weize_user_admin_log`";$row = $DB->get_one($sql); // 获取单条结果print_r($row);echo '
---------------------------- 获取全部结果 ----------------------------
';$sql = "SELECT * FROM `weize_user_admin_log`";$all = $DB->get_all($sql); // 获取全部结果print_r($all);echo '
---------------------------- 获取[分页]结果 ----------------------------
';$sql = "SELECT * FROM `weize_user_admin_log`";$page_data = $DB->page($sql); // 获取分页结果$showpage = $DB->showpage(); // 获取上一页、下一页的变量print_r($page_data); // 输出分页数据echo '
';echo $showpage; // 输出上一页、下一页的HTML字符串*/class MysqliModel extends mysqli { public $error_reporting = FALSE; // 是否显示错误报告,false为显示,true为不显示 public $result = NULL; // 结果集 public $page_count = 0; // 总记录数,用于分页 public $page_all = 0; // 总页数 public $page_current = 1; // 当前页 public $page_size = 10; // 每页显示条数 /** * 构造函数 */ public function __construct($host, $username, $passwd, $dbname = '', $port = 3306, $socket = NULL, $dbcharset = 'utf8', $error_reporting = TRUE) { parent::__construct($host, $username, $passwd, $dbname, $port, $socket); if($this->connect_error) { if($error_reporting === FALSE) { die('Could not connect: (' . $this->connect_errno . ') '. $this->connect_error); } else { // 记录连接错误日志 $url = htmlspecialchars($_SERVER['REQUEST_URI']); $time = time(); $date = date('Y-m-d H:i:s', $time); $data = "
[DATE]$date [URL]$url [CONNECT_ERRNO]". $this->connect_errno ." [CONNECT_ERROR]". $this->connect_error ."\n"; error_log($data, 3, ROOT_PATH . '/data/log/'.date('Ymd', $time).'_mysql_error.php'); // 停止程序执行 //die('Could not connect MySQL.'); } } $this->error_reporting = $error_reporting; $this->set_charset($dbcharset); } /** * 数据库执行语句,可执行查询添加修改删除等任何sql语句 * 失败时返回 FALSE,通过 mysqli_query() 成功执行SELECT, SHOW, DESCRIBE或 EXPLAIN查询会返回一个mysqli_result 对象,其他查询则返回TRUE。 */ public function query($sql, $resultmode = MYSQLI_STORE_RESULT) { $this->result = parent::query($sql, $resultmode); if($this->result === FALSE) { if($this->error_reporting === FALSE) { die('Invalid query: ' . $this->errno . ' '. $this->error. '. SQL: ' . $sql); } else { // 记录请求错误日志 $url = htmlspecialchars($_SERVER['REQUEST_URI']); $time = time(); $date = date('Y-m-d H:i:s', $time); $data = "
[DATE]$date [URL]$url [QUERY_ERRNO]". $this->errno ." [QUERY_ERROR]". $this->error ."\n"; error_log($data, 3, ROOT_PATH . '/data/log/'.date('Ymd', $time).'_mysql_error.php'); // 停止程序执行 //die('Invalid query.'); } } return $this->result; } /** * 获取一条数据,如果没有数据返回空数组 * @param array */ public function get_one($sql) { $res = $this->query($sql); if ($res !== FALSE) { $row = $res->fetch_assoc(); if(!empty($row)) { return $row; } else { return array(); } } else { return array(); } } /** * 获取所有数据,如果没有数据返回空数组 */ public function get_all($sql) { $res = $this->query($sql); if ($res !== FALSE) { //$arr = $result->fetch_all($resulttype); // MYSQLI_NUM,MYSQLI_ASSOC,MYSQLI_BOTH (PHP 5 >= 5.3.0) $arr = array(); while($row = $res->fetch_assoc()) { $arr[] = $row; } $res->free(); // free result set return $arr; } else { return array(); } } /** * +----------------------------------- * | 分页 * +----------------------------------- * | 使用实例: * | $DB = new db_mysqli(...); * | $page_data = $DB->page("SELECT * FROM `test`"); // 获取数据 * | $showpage = $DB->showpage(); // 生成分页链接 * | print_r($page_data); * | echo $showpage; // 输出分页链接 * +----------------------------------- */ public function page($sql, $page_size = 10) { // 总记录数 $this->page_count = $this->query($sql)->num_rows; if($this->page_count > 0) { // 总页数 $this->page_all = ceil($this->page_count / $page_size); // 当前页 $this->page_current = ( isset($_GET['page']) && (intval($_GET['page'])>0) ) ? intval($_GET['page']) : 1; if($this->page_current > $this->page_all) { $this->page_current = $this->page_all; } // 每页显示条数 $this->page_size = $page_size; $sql = $sql . " LIMIT " . (($this->page_current-1) * $this->page_size) . ", " . $this->page_size; return $this->get_all($sql); } else { return array(); } } // 获取地址栏差数,主要用于分页时传递其他差数。$unset用于去掉不需要传值的参数,多个用,隔开 public function geturl($unset = '') { $list = array(); $keys = explode(',', $unset); foreach ($_GET as $key => $val) { if (!in_array($key, $keys)) { $list[] = $key.'='.urlencode($val); } } return implode('&', $list); } // 显示分页,需要配合page()函数使用,$show_num=TRUE表示显示数字分页,否则显示首页、上一页、下一页、尾页 public function showpage($show_num = TRUE) { //echo "123123"; $page = ''; if($this->page_all > 1) { $url = $this->geturl('page'); $url = empty($url) ? '?page=' : '?'.$url.'&page='; if($this->page_current > 1) { $page .= '
首页
上一页 '; } else { $page .= '
首页
上一页 '; } if($show_num) { if($this->page_all < 6) { $arr = range(1, $this->page_all); } else { if($this->page_current < 3) { $arr = range(1, 5); } elseif ( $this->page_current <= $this->page_all && $this->page_current > ($this->page_all - 3) ) { $arr = range(($this->page_all - 4), $this->page_all); } else { $arr = range(($this->page_current - 2), ($this->page_current + 2)); } } foreach($arr as $val) { if($val == $this->page_current) { $page .= '
'.$val.' '; } else { $page .= '
'.$val.' '; } } } if($this->page_current < $this->page_all) { $page .= '
下一页
尾页 '; } else { $page .= '
下一页
尾页 '; } $page .= $this->page_count . "条记录 ". $this->page_current . "/" . $this->page_all . "页 "; } return $page; } }

 

视图

 

完成

转载地址:http://frvyo.baihongyu.com/

你可能感兴趣的文章
git revert和reset区别
查看>>
List集合remove元素的问题
查看>>
Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter
查看>>
matlab 设定坐标比例
查看>>
elasticsearch 性能监控基础
查看>>
Spring Boot多数据源连接8小时后断开的问题解决(MySQL)
查看>>
变量的保存重载和打印
查看>>
WPF C# 多屏情况下,实现窗体显示到指定的屏幕内
查看>>
WPFのclipToBounds与maskToBounds的区别
查看>>
LeetCode: Subsets 解题报告
查看>>
C++11 并发指南四(<future> 详解二 std::packaged_task 介绍)
查看>>
一个简单的JavaScript Map
查看>>
机器学习经典书籍
查看>>
glib 关系
查看>>
职能网络排课系统 在线排课系统 在线排课软件 适合课外辅导行业
查看>>
流媒体服务器搭建实例——可实现录音,录像功能
查看>>
JavaScript 演练(5). 模拟类
查看>>
[zz]ubuntu 12.04 kvm+qemu 搭建虚拟机
查看>>
转移虚拟机后ubuntu network available SIOCSIFADDR: No such device
查看>>
OpenGL_Qt学习笔记之_07(闪烁的星星)
查看>>